namespace Controller.BoolTest;

using Microsoft.AspNetCore.Mvc;
using Model.Pizza;

/// <summary>
/// 原理：函数传入值的来源为客户端请求，返回值传递给客户端。
/// 可在传入参数中加[FromBody]、[FromForm]等特性以指定参数在客户端请求的位置。
/// [FromBody]将参数放在请求体中
/// [FromForm]请求体中传递表单格式的数据
/// [FromHeader]
/// [FromQuery]
/// [FromServices]
/// [FromRoute]
/// </summary>
[ApiController] // 禁用后可以使swagger输入从字符串自由输入变为限定值的输入
                // 用于自动推断数据源
[Route("api/[controller]/[action]")]
public class PizzaController : Controller
{
    [HttpPost]
    public bool UseBoolean1(bool test)
    {
        return test;
    }
    /// <summary>
    /// HTTP动词传参的时候，传入的值是零散的，则访问方法是GET（信息附加在URL上，及与JSON对立的Form表单模式）；
    /// 传入的是一个（对象）视图模型，则访问方法是POST（把JSON数据放在请求体中）
    /// </summary>
    public class Boolean
    {
        public bool boolean { get; set; }
    }
    [HttpPost]
    public Boolean UseBoolean2(Boolean test)
    {
        return test;
    }
    /// <summary>
    /// 布尔值不能用postwoman的表单模式，只能用原始模式
    /// 在参数前加`[FromBody]`即可将数据放在请求体中
    /// </summary>
    [HttpPost]
    public bool UseBoolean3([FromBody]bool test)
    {
        return test;
    }
    /// <summary>
    /// 在参数前加`[FromHeader]`即可将数据放在请求头中
    /// </summary>
    [HttpPost]
    public bool UseBoolean4([FromHeader]bool test)
    {
        return test;
    }
}
